import json
import os
from utils import get_deepseek_model
from json_format_wf import preprocess_from_file
from typing import Dict, List, Any


def check_consistency(json_path: str) -> Dict[str, List[str]]:
    """
    调用LLM检查病历中的前后矛盾
    
    参数:
        json_path: 病历JSON文件路径
        
    返回:
        包含不一致项列表的字典
    """
    # 获取格式化后的病历文本
    medical_record_text = preprocess_from_file(json_path)
    
    # 初始化模型
    llm = get_deepseek_model()
    
    # 构造系统提示词
    system_prompt = """你是一名专业的病历质控专家，请交叉比对病历不同部分的信息，找出其中存在的前后矛盾或不一致的地方。

请仅输出明确的矛盾信息，而不是建议或推断，只输出有问题的地方。

请按照以下格式严格输出：
字段路径1: 具体问题描述
字段路径2: 具体问题描述

例如：
病情信息.诊断: 诊断为痛风性关节炎，但用药信息中未体现降尿酸药物
用药信息[2].用法: 双氯芬酸钠为口服药物却标记为im（肌肉注射）

严格按照"字段路径: 问题描述"的格式输出，一行一个。"""

    # 构造用户提示词
    user_prompt = f"请对以下病历内容进行前后矛盾检查：\n\n{medical_record_text}"
    
    # 调用模型
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_prompt}
    ]
    
    response = llm.invoke(messages)
    content = response.content.strip()
    
    # 解析结果
    inconsistency_list = []
    if content:
        lines = content.split('\n')
        for line in lines:
            line = line.strip()
            if line and not line.startswith(('```', '#', '-', '*')):
                inconsistency_list.append(line)
    
    return {"内部不一致列表": inconsistency_list}

# if __name__ == "__main__":
#     # 直接调用函数测试功能
#     test_data_path = os.path.join(os.path.dirname(__file__), "data", "1.json")
    
#     # 检查文件是否存在
#     if not os.path.exists(test_data_path):
#         print(f"错误: 测试数据文件未找到: {test_data_path}")
#     else:
#         result = check_consistency(test_data_path)
#         print("检查结果:")
#         print(result)
#     # unittest.main()